package types

type GetProjectTaskProcessTotalReq struct {
	ProjectId       int64  `json:"project_id" binding:"required"`
	StartTime       int64  `json:"start_time" binding:"required"`
	EndTime         int64  `json:"end_time" binding:"required"`
	Today           int    `json:"today"`
	StepCategoryIds string `json:"step_category_ids"`
}

type GetTaskDeliveryCountReq struct {
	GetProjectTaskProcessTotalReq
	ColumKey         string `json:"colum_key" binding:"required"`
	StepCategoryName string `json:"step_category_name" binding:"required"`
}
type GetTaskDeliveryCountReqColumKeyType struct {
	DeliveryDetail     string
	DoneDetail         string
	StandardPlanDetail string
	DemandChangeDetail string
	WorkOrderSituation string
}

var GetTaskDeliveryCountReqColumKey = GetTaskDeliveryCountReqColumKeyType{
	DeliveryDetail:     "delivery",
	DoneDetail:         "done",
	StandardPlanDetail: "standard_plan",
	DemandChangeDetail: "demand_change",
	WorkOrderSituation: "work_order",
}

type GetTaskDeliveryCountRes struct {
	ShouldDeliveryTotal    int64 `json:"should_delivery_total"`    // 应交付任务数
	ActualDeliveryTotal    int64 `json:"actual_delivery_total"`    // 实际交付任务数
	ShouldDeliveryAbnormal int64 `json:"should_delivery_abnormal"` // 应交付中的异常任务数
}

type GetStandardTaskCountItem struct {
	StepCategoryId int64 `json:"step_category_id"`
	Plan           int64 `json:"plan_done"`       // 计划完成
	PlanDone       int64 `json:"plan_done_done"`  // 计划完成里的完成
	PlanDoneFrame  int64 `json:"plan_done_frame"` // 计划完成完成的帧数
	ActualDone     int64 `json:"actual_done"`     // 实际完成
	Abnormal       int64 `json:"abnormal"`        // 异常
}

type GetTaskDoneCountRes struct {
	ShouldDoneTotal    int64 `json:"should_done_total"`    // 应完成任务数
	ActualDoneTotal    int64 `json:"actual_done_total"`    // 实际完成任务数
	ShouldDoneAbnormal int64 `json:"should_done_abnormal"` // 应完成中的异常任务数
}

type WorkLoadCount struct {
	ProjectMemberWorkTimeHour     int64   `json:"project_member_work_time_hour"`      // 项目成员总任务工时
	ProjectMemberDingWorkTimeHour int64   `json:"project_member_ding_work_time_hour"` // 项目成员总钉钉工时
	ProjectMemberWorkHourPercent  float64 `json:"project_member_work_hour_percent"`   // 工时比例
}

type GetWorkLoadCountRes struct {
	InprogressTotal    int64 `json:"inprogress_total"`    // 进行中的任务
	InprogressAbnormal int64 `json:"inprogress_abnormal"` // 进行中的异常任务数
	WorkLoadCount
}

type UserCategoryWorkLoadCount struct {
	UserId           int64   `json:"user_id"`
	StepCategoryId   int64   `json:"step_category_id"`
	DingWorkTimeHour float64 `json:"project_member_ding_work_time_hour"`
	WorkTimeHour     int64   `json:"project_member_work_time_hour"` // 项目成员总任务工时
}

type GetStepCategoryProgressResItem struct {
	StepCategoryIdList []int64  `json:"step_category_id_list"` // 分类id
	StepCategoryName   string   `json:"step_category_name"`    // 分类名称
	ModuleCodeList     []string `json:"module_code_list"`      // 模块code list

	DeliveryTotal       int64           `json:"delivery_total"`      // 交付总数
	DeliveryDone        int64           `json:"delivery_done"`       // 已交付总数
	DeliveryDoneFrame   int64           `json:"delivery_done_frame"` // 已交付总帧数
	DeliveryAbnormal    int64           `json:"delivery_abnormal"`   // 交付异常数量
	DeliverEpisodeIdMap map[int64]int64 `json:"-"`

	TaskTotal    int64 `json:"task_total"`    // 任务总数
	TaskDone     int64 `json:"task_done"`     // 任务已完成数
	TaskAbnormal int64 `json:"task_abnormal"` // 任务异常数

	StandardMeetingTotal  int64 `json:"standard_meeting_total"`   // 标准会议总数
	StandardMeetingUnDone int64 `json:"standard_meeting_un_done"` // 标准会议未完成

	DemandChangeAdd             int64           `json:"demand_change_add"` // 需求变更 新增
	DemandChangeDel             int64           `json:"demand_change_del"` // 需求变更 废除
	DemandChangeAddEntityIdList []int64         `json:"-"`
	DemandChangeAddEntityIdMap  map[int64]int64 `json:"-"`
	DemandChangeDelEntityIdList []int64         `json:"-"`
	DemandChangeDelEntityIdMap  map[int64]int64 `json:"-"`

	WorkOrderTotal    int64 `json:"work_order_total"`     // 工单总数
	WorkOrderUnHandle int64 `json:"work_order_un_handle"` // 工单未解决数量

	WorkLoadWorkHourTotal   int64          `json:"work_load_work_hour_total"`   // 产能情况 工时总数
	WorkLoadDingHourTotal   float64        `json:"work_load_ding_hour_total"`   // 产能情况 钉钉工时总数
	WorkLoadWorkHourPercent float64        `json:"work_load_work_hour_percent"` // 产能情况 工时占比
	WorkLoadUserIdMap       map[int64]bool `json:"-"`                           // 产能情况 用户id唯一验证

	PreTaskDelivery bool `json:"pre_task_delivery"` // 前置任务交付情况
}

type GetPlanEndTimeStepCategoryCountItem struct {
	Id         int64 `json:"id"`
	Plan       int64 `json:"plan"`        // 计划
	PlanDone   int64 `json:"done"`        // 完成
	ActualDone int64 `json:"actual_done"` // 实际完成
	Abnormal   int64 `json:"abnormal"`    // 异常
}

type GetDemandChangeCountResItem struct {
	Id              int64   `json:"id"`
	AddEntityIdList []int64 `json:"add_entity_id_list"`
	DelEntityIdList []int64 `json:"del_entity_id_list"`
}

type GetWorkOrderCountResItem struct {
	Id       int64 `json:"id"`
	Total    int64 `json:"total"`
	UnHandle int64 `json:"un_handle"`
}

type UserCategoryItem struct {
	UserId         int64 `json:"user_id"`
	StepCategoryId int64 `json:"step_category_id"`
}

type UserWorkHourItem struct {
	UserId   int64 `json:"user_id"`
	WorkHour int64 `json:"work_hour"`
}
